package cn.bugstack.springframework.beans.factory;

/**
 * BeanFactory：
 *      BeanFactory 是Spring框架的核心接口之一，负责管理和控制bean的生命周期，以及对bean的依赖注入等操作。
 *      BeanFactory 的实现类包括 DefaultListableBeanFactory、XmlBeanFactory 等，
 *      它们通过读取配置文件或者注解扫描等方式加载bean的定义，并负责实例化、初始化和管理bean对象。
 * FactoryBean：
 *      FactoryBean 是一个接口，用于自定义bean的创建逻辑。
 *      当一个bean实现了 FactoryBean 接口时，它不是直接返回该bean本身，而是返回该bean的某种类型的对象。(代理对象)
 * 实现了 FactoryBean 接口的bean需要实现 getObject() 方法，该方法定义了实际返回的对象，通常是该bean的某种特定类型的实例。
 * 同时，也可以通过 getObjectType() 方法指定返回对象的类型。
 * 典型的例子是 org.springframework.beans.factory.config.PropertyPlaceholderConfigurer，
 * 它是一个工厂bean，用于解析属性占位符并替换为相应的属性值。
 * 总的来说，BeanFactory 是Spring框架的核心容器，负责管理bean的生命周期和依赖注入等操作；
 * 而 FactoryBean 是一个接口，用于定制bean的创建逻辑，允许我们在获取bean时进行更灵活的处理。
 */

public interface FactoryBean<T> {

    T getObject() throws Exception;

    Class<?> getObjectType();

    boolean isSingleton();

}